| Conditions | 1 | 
| Paths | 1 | 
| Total Lines | 29 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 2 | ||
| Bugs | 0 | Features | 0 | 
| 1 | import callAPIMethod from './callAPIMethod';  | 
            ||
| 5 | const createAPI = (  | 
            ||
| 6 |     resources = {}, | 
            ||
| 7 | middleware = [],  | 
            ||
| 8 | APINamespace,  | 
            ||
| 9 | fetchOptions  | 
            ||
| 10 | ) => Object.keys(resources).reduce( (api, resourceId) => { | 
            ||
| 11 | api[resourceId] = Object.keys(resources[resourceId].methods)  | 
            ||
| 12 |         .reduce( (resource, method) => { | 
            ||
| 13 |             resource[method] = (params, methodOptions) => { | 
            ||
| 14 | const apiParams = resources[resourceId].methods[method](params);  | 
            ||
| 15 | const boundCallAPIMethod = callAPIMethod.bind(  | 
            ||
| 16 | null,  | 
            ||
| 17 | APINamespace,  | 
            ||
| 18 | fetchOptions,  | 
            ||
| 19 | (resources[resourceId].namespace || resources[resourceId].prefix)  | 
            ||
| 20 | );  | 
            ||
| 21 | return applyMiddleware(  | 
            ||
| 22 | boundCallAPIMethod,  | 
            ||
| 23 | middleware,  | 
            ||
| 24 | methodOptions,  | 
            ||
| 25 | apiParams,  | 
            ||
| 26 | resourceId,  | 
            ||
| 27 | method  | 
            ||
| 28 | );  | 
            ||
| 29 | };  | 
            ||
| 30 | return resource;  | 
            ||
| 31 |         }, {}); | 
            ||
| 32 | return api;  | 
            ||
| 33 | }, {}); | 
            ||
| 34 | |||
| 36 |